package com.cg.design.graphicdesignpattern.visitor;

import java.util.Iterator;

/**
 * 获取文件夹大小的Visitor类
 *
 * @program: LeetCode->SizeVisitor
 * @description: 获取文件夹大小的Visitor类
 * @author: cg
 * @create: 2022-03-26 23:35
 **/
public class SizeVisitor extends Visitor {

    /**
     * 文件夹大小
     */
    private int size;

    public int getSize() {
        return size;
    }

    @Override
    public void visit(File file) {
        // 加上文件大小
        size += file.getSize();
    }

    @Override
    public void visit(Directory directory) {
        // 迭代加上文件夹中文件的大小
        Iterator<Entry> iterator = directory.iterator();
        while (iterator.hasNext()) {
            iterator.next().accept(this);
        }
    }
}
